코딩테스트 연습 - 시저 암호 | 프로그래머스 스쿨

[ 템플릿 코드 ]

#include <string>
#include <vector>
 
using namespace std;
 
string solution(string s, int n) {
    string answer = "";
    return answer;
}

[ 풀이 ]

#include <string>
 
using namespace std;
 
string solution(string s, int n)
{
    for(int i = 0; i < s.size(); i++)
    {
        if(s[i] == ' ')
            continue;
 
        if(s[i] >= 'A' && s[i] <= 'Z')
        {
            s[i] = 'A' + (s[i] - 'A' + n) % 26;
        }
        else if(s[i] >= 'a' && s[i] <= 'z')
        {
            s[i] = 'a' + (s[i] - 'a' + n) % 26;
        }
    }
 
    return s;
}

[ 해설 ]

#include <string>
 
using namespace std;
 
string solution(string s, int n)
{
    // 문자열의 모든 문자 확인
    for(int i = 0; i < s.size(); i++)
    {
        // 공백은 암호화하지 않음
        if(s[i] == ' ')
            continue;
 
        // 현재 문자가 대문자라면
        if(s[i] >= 'A' && s[i] <= 'Z')
        {
            // A를 기준으로 위치를 구한 뒤
            // n만큼 이동하고
            // %26으로 알파벳 범위를 순환시킴
            s[i] = 'A' + (s[i] - 'A' + n) % 26;
        }
        // 현재 문자가 소문자라면
        else if(s[i] >= 'a' && s[i] <= 'z')
        {
            // a를 기준으로 위치를 구한 뒤
            // n만큼 이동하고
            // %26으로 알파벳 범위를 순환시킴
            s[i] = 'a' + (s[i] - 'a' + n) % 26;
        }
    }
 
    // 암호화된 문자열 반환
    return s;
}

[ 타 답안 ]

 

C++ CodingTest